package com.niiwoo.civet.trade.service.creditor;

import com.niiwoo.civet.trade.dto.request.creditor.CancelCreditorSaleRequestDTO;
import com.niiwoo.civet.trade.dto.request.creditor.CreditorSaleApplyRequestDTO;
import com.niiwoo.civet.trade.dto.request.creditor.CreditorSaleOrderPageRequestDTO;
import com.niiwoo.civet.trade.dto.request.creditor.CreditorValidateRequestDTO;
import com.niiwoo.civet.trade.dto.response.creditor.*;

/**
 * 债转订单Dubbo服务
 *
 * @author zhoulinquan
 * @date 2018/5/14
 */
public interface CreditorSaleOrderDubboService {
    /**
     * 获取指定用户所有债转订单(批次订单)
     *
     * @param
     * @return
     */
    default PageCreditorSaleBatchOrderDTO getUserAllCreditorBatchSaleOrderByPage(CreditorSaleOrderPageRequestDTO request) {
    	return null;
    }
    
    /**
     * 获取指定用户所有债转订单(明细订单)
     *
     * @param
     * @return
     */
    default PageCreditorSaleDetailOrderDTO getUserAllCreditorDetailSaleOrderByPage(CreditorSaleOrderPageRequestDTO request) {
    	return null;
    }
    

    /**
     * 获取指定用户债转批次订单
     * @param userId
     * @param creditorSaleBatchId
     * @return
     */
    default CreditorSaleBatchOrderDTO getCreditorSaleBatchOrder(String userId, Long creditorSaleBatchId) {
    	return null;
    }

    /**
     * 获取指定用户债转明细订单
     * @param saleUserId
     * @param creditorSaleDetailId
     */
    default CreditorSaleDetailOrderDTO getCreditorSaleDetailOrder(String saleUserId, Long creditorSaleDetailId) {
    	return null;
    }

    /**
     * 较验债权出让
     * 
     * @param requestDTO
     */
	default void validateSaleCreditor(CreditorValidateRequestDTO requestDTO) {
		throw new UnsupportedOperationException("unimplemented");
	}
	
	/**
	 * 申请债权出让
	 * 
	 * @param requestDTOs
	 * @param userId
	 * @return
	 */
	default CreditorSaleApplyResponseDTO creditorSaleApply(CreditorSaleApplyRequestDTO requestDTO) {
		throw new UnsupportedOperationException("unimplemented");
	}
	
	/**
	 * 申请债权出让预处理
	 * 
	 * @param requestDTOs
	 * @param userId
	 * @return
	 */
	default void preCreditorSaleApply(CreditorSaleApplyRequestDTO requestDTO) {
		throw new UnsupportedOperationException("unimplemented");
	}	
	
	/**
	 * 取消债权出让
	 * 
	 * @param requestDTOs
	 * @param userId
	 * @return
	 */
	default void cancelCreditorSale(CancelCreditorSaleRequestDTO requestDTO) {
		throw new UnsupportedOperationException("unimplemented");
	}
	
	/**
	 * 自动取消已过期的债权出让订单
	 */
	default void autoCancelCreditorSale() {
		throw new UnsupportedOperationException("unimplemented");
	}
	
	/**
	 * 出让申请中补偿任务
	 */
	default void debentureSaleCompensation() {
		throw new UnsupportedOperationException("unimplemented");
	}
	
	/**
	 * 取消债权出让同步到银行存管补偿任务
	 */
	default void cancelDebentureSaleCompensation() {
		throw new UnsupportedOperationException("unimplemented");
	}
	
	/**
	 * 删除可投资的债权标中已售罄的债权订单
	 */
	default void deleteSelloutCreditorOrder() {
		throw new UnsupportedOperationException("unimplemented");
	}

	default CreditorTransferRemainingDayAndMonthDTO getTransferRemainingDayAndMonth(Long investOrderId, Long refundOrderDetailId) {
		throw new UnsupportedOperationException("unimplemented");
	}
}
